#include <iostream>
using namespace std;

class F
{
public:
    virtual void func()
    {
        cout<<"这是基类函数"<<endl;
    }
};

class s:public F
{
public:
    void func()
    {
        cout<<"这是派生类函数"<<endl;
    }
};

int main(int argc, char const *argv[])
{
    s s1;
    // 用基类指针时，不加virtual关键字，调用的是基类的函数
    
    class F*f_p= &s1; //虽然fp是基类指针变量， 但是实际存放的类对象是派生类对象地址
    f_p->func(); //基于 基类指针 指向 派生对象前提下，我们是偏向于调用 派生类的同名函数，但是实际上调用 基类的同名函数
    s1.func(); //派生类对象可以直接调用 派生类的同名函数
    return 0;
}
